Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/snusnu/dm-accepts_nested_attributes
A DataMapper plugin that allows nested model assignment like activerecord.
https://github.com/snusnu/dm-accepts_nested_attributes
Last synced: 11 days ago
JSON representation
A DataMapper plugin that allows nested model assignment like activerecord.
- Host: GitHub
- URL: https://github.com/snusnu/dm-accepts_nested_attributes
- Owner: snusnu
- License: mit
- Created: 2009-04-08T17:37:17.000Z (over 15 years ago)
- Default Branch: master
- Last Pushed: 2013-02-03T16:35:20.000Z (almost 12 years ago)
- Last Synced: 2024-05-11T20:40:53.640Z (6 months ago)
- Language: Ruby
- Homepage:
- Size: 515 KB
- Stars: 54
- Watchers: 3
- Forks: 33
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# dm-accepts_nested_attributes
A DataMapper plugin that allows nested model attribute assignment like activerecord does.
Current documentation can always be found at [rdoc.info](http://rdoc.info/projects/snusnu/dm-accepts_nested_attributes)
## Examples
The following example illustrates the use of this plugin.
require "rubygems"
require "dm-core"
require "dm-validations"
require "dm-accepts_nested_attributes"
DataMapper::Logger.new(STDOUT, :debug)
DataMapper.setup(:default, 'sqlite3::memory:')
class Person
include DataMapper::Resource
property :id, Serial
property :name, String
has 1, :profile
has n, :project_memberships
has n, :projects, :through => :project_memberships
accepts_nested_attributes_for :profile
accepts_nested_attributes_for :projects
# adds the following instance methods
# #profile_attributes=
# #profile_attributes
# #projects_attributes=
# #projects_attributes
end
class Profile
include DataMapper::Resource
property :id, Serial
property :person_id, Integer
belongs_to :person
accepts_nested_attributes_for :person
# adds the following instance methods
# #person_attributes=
# #person_attributes
end
class Project
include DataMapper::Resource
property :id, Serial
has n, :tasks
has n, :project_memberships
has n, :people, :through => :project_memberships
accepts_nested_attributes_for :tasks
accepts_nested_attributes_for :people
# adds the following instance methods
# #tasks_attributes=
# #tasks_attributes
# #people_attributes=
# #people_attributes
end
class ProjectMembership
include DataMapper::Resource
property :id, Serial
property :person_id, Integer
property :project_id, Integer
belongs_to :person
belongs_to :project
end
class Task
include DataMapper::Resource
property :id, Serial
property :project_id, Integer
belongs_to :project
end
DataMapper.auto_migrate!## TODO
* collect validation errors from related resources
* update README to include more complete usecases
* think about replacing :reject_if with :if and :unless