我有3个型号:
class Resource < ActiveRecord::Base
has_many :blocks
has_many :topics, :through => :blocks, dependent: :destroy
class Topic < ActiveRecord::Base
has_many :blocks
has_many :resources, :through => :blocks, :class_name => 'Resource', dependent: :destroy
accepts_nested_attributes_for :resources
accepts_nested_attributes_for :blocks, :allow_destroy => true
class Block < ActiveRecord::Base
belongs_to :resource
belongs_to :topic
accepts_nested_attributes_for :resource, :allow_destroy => true, :reject_if => :all_blank
我的路线:
namespace :admin do
resources :topics do
resources :resources do
post :link
delete :unlink
一切正常,除了我想在“添加资源”中选择现有资源(在下拉列表中)以及创建新资源(工作正常)。
所以,我想要一个显示所有资源的下拉菜单,然后将我选择的那个添加到Block模型中。换句话说,我只需要创建主题和资源之间的关联(通过块模型)。
当我有一个多选项时,我能够做到这一点,但是我正在敲打我的头只能用一个资源(在已经选择的那个上添加它)。
我清楚了吗? :/谢谢! - 文森特
答案 0 :(得分:0)
如果你有这样复杂的逻辑,最好使用一些东西 像"Form Objects"一样保存多个模型和关系 他们。即将保存逻辑移到两个模型之外。
access_nested_attributes_for
应该只用于非常简单
案例(像大多数Rails的神奇功能一样)