我有什么似乎是,即使在这里有一个相关的维基页面一个俗套的问题:https://github.com/sferik/rails_admin/wiki/Has-many-%3Athrough-associationrails_admin插件的问题与一个嵌套的has_many形式:通过关系
我会尽量简短。我正在构建的应用程序中有一个has_many:through关系。涉及的模型如下:
运动员,运动员角色,体育角色。
sport_roles表中列出了运动员可以拥有的一般角色,如一垒手,二垒手等。 athlete_roles表是包含athlete_id和sport_id的多对多连接表。
我的模型在下面用代码示例进行定义。我只是想创建一名运动员,并将他们与1+个运动员角色联系起来(这将最终在athlete_roles表中创建1个以上的新纪录)。它不应该问我一个athlete_id,因为运动员在后台调用save并通过验证之前不会有id。我不需要在这里创建新的sport_roles。我们将假设所有正在创建的新运动员都可以采用的角色已经预先定义好了。
**编辑**
为了澄清,我的问题是,我如何才能选择一个或多个现有体育角色使用rails_admin插件,而不是在一个独立的形式运动员?我不想创造新的体育角色,但我希望能够在创建运动员时选择现有的一两个,并将这些数据反映在athlete_roles表中。
下面的代码。
class Athlete < ActiveRecord::Base
has_many :athlete_roles, :dependent => :delete_all, :autosave => true, :include => :sport_role
has_many :sport_roles, :through => :athlete_roles
attr_accessible :first_name
attr_accessible :middle_name
attr_accessible :last_name
attr_accessible :suffix_name
attr_accessible :birthdate
# FOR RAILS_ADMIN
# for a multiselect widget:
attr_accessible :sport_role_ids
accepts_nested_attributes_for :athlete_roles, :allow_destroy => true
attr_accessible :athlete_roles_attributes
end
class AthleteRole < ActiveRecord::Base
attr_accessible :athlete_id
attr_accessible :sport_role_id
# Associations
belongs_to :athlete
belongs_to :sport_role
# validations
validates :athlete_id,:presence=>true,:uniqueness=>{:scope => [:sport_role_id], :message => "is already associated with this Sport Role"}
validates :sport_role_id,:presence=> true
end
class SportRole < ActiveRecord::Base
has_many :athlete_roles, :dependent => :delete_all
has_many :athletes, :through => :athlete_roles
attr_accessible :name
attr_accessible :short_name
attr_accessible :description
attr_accessible :created_at
attr_accessible :updated_at
attr_accessible :athlete_ids
attr_accessible :athlete_role_ids
validates :name, :presence => true
validates :short_name, :presence => true
validates :description,:length=>{:maximum => 500, :allow_nil => true}
end
有什么问题之间
关系?即:你究竟发生了什么问题,你得到的错误信息是什么? – 2013-02-19 03:07:09
我编辑了我的问题,使其更加明显,我正在寻求帮助,对不起。 – randombits 2013-02-19 03:13:38
什么不行?你有没有收到任何错误信息? – Automatico 2013-02-25 23:37:25