Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
glebtv-mongoid-paperclip
Advanced tools
.destroy_all on embedded relations DOES NOT WORK, you have to use .destroy
As the title suggests: Mongoid::Paperclip
makes it easy to hook up Paperclip with Mongoid.
This is actually easier and faster to set up than when using Paperclip and the ActiveRecord ORM. This example assumes you are using Ruby on Rails 3 and Bundler. However it doesn't require either.
Simply define the mongoid-paperclip
gem inside your Gemfile
. Additionally, you can define the aws-sdk
gem if you want to upload your files to Amazon S3. You do not need to explicitly define the paperclip
gem itself, since this is handled by mongoid-paperclip
.
Rails.root/Gemfile - Just define the following:
gem "glebtv-mongoid-paperclip"
gem 'aws-sdk', '~> 1.3.4'
Next let's assume we have a User model and we want to allow our users to upload an avatar.
Rails.root/app/models/user.rb - include the Mongoid::Paperclip module and invoke the provided class method
class User
include Mongoid::Document
include Mongoid::Paperclip
has_mongoid_attached_file :avatar
end
That's all you have to do. Users can now upload avatars. Unlike ActiveRecord, Mongoid doesn't use migrations, so we don't need to define the Paperclip columns in a separate file. Invoking the has_mongoid_attached_file
method will automatically define the necessary :avatar
fields for you in the background.
Just like Paperclip, Mongoid::Paperclip takes a second argument (hash of options) for the has_mongoid_attached_file
method, so you can do more complex things such as in the following example.
class User
include Mongoid::Document
embeds_many :pictures
end
class Picture
include Mongoid::Document
include Mongoid::Paperclip
embedded_in :user, :inverse_of => :pictures
has_mongoid_attached_file :attachment,
:path => ':attachment/:id/:style.:extension',
:storage => :s3,
:url => ':s3_alias_url',
:s3_host_alias => 'something.cloudfront.net',
:s3_credentials => File.join(Rails.root, 'config', 's3.yml'),
:styles => {
:original => ['1920x1680>', :jpg],
:small => ['100x100#', :jpg],
:medium => ['250x250', :jpg],
:large => ['500x500>', :jpg]
},
:convert_options => { :all => '-background white -flatten +matte' }
end
@user.pictures.each do |picture|
<%= picture.attachment.url %>
end
Note on embedded documents: if you plan to save or update the parent document, you MUST add cascade_callbacks: true to your embeds_XXX statement. Otherwise, your data will be updated but the paperclip functions will not run to copy/update your file.
In the above example:
class User
...
embeds_many :pictures, :cascade_callbacks => true
accepts_nested_attributes_for :pictures, ...
attr_accepted :pictures_attributes, ...
...
end
@user.update_attributes({ ... :pictures => [...] })
Quite a lot of people have been looking for a solution to use Paperclip with Mongoid so I hope this helps!
If you need more information on either Mongoid or Paperclip I suggest checking our their official documentation and website.
Mongoid::Paperclip is released under the MIT license. See LICENSE for more information.
FAQs
Unknown package
We found that glebtv-mongoid-paperclip demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.