我正在开发一个 rails (3.7.8) 应用程序并使用活动管理员来管理 ff 模型的资源:
class AdminUser < ActiveRecord::Base
has_many :user_article_categories, :include => :article_categories
has_many :article_categories, :through => :user_article_categories,
:source => :admin_user
has_many :articles, :through => :user_article_categories,
:source => :admin_user
# ...
end
class UserArticleCategory < ActiveRecord::Base
belongs_to :admin_user
belongs_to :article_category
attr_accessible :admin_user_id, :article_category_id, :included
attr_accessor :included
after_find :set_included
private
def set_included
self.included = "1"
end
# ...
end
“包含”属性基于此处提供的解决方案
class ArticleCategory < ActiveRecord::Base
has_many :user_article_categories, :include => :admin_users
has_many :admin_users, :through => :user_article_categories,
:source => :article_category
has_many :articles, :through => :user_article_categories,
:source => :article_category
# ...
end
但我似乎没有为 admin_users 设置(正确)表单,这样创建新的 admin_user 会将所有 article_categories 显示为复选框列表
虽然用于更新的持久 admin_user 将显示所有 article_categories 复选框,但会检查所有先前设置的文章类别,以便更新将删除未选中的复选框并将新选中的复选框添加到连接表中
对于 admin/admin_users.rb 我创建如下表单,这不起作用,虽然它呈现正确,任何帮助将不胜感激
form do |f|
if f.object.persisted? and current_admin_user.id == f.object.id
f.inputs "Admin Details" do
f.input :email
f.inputs :for => user_article_categories do |usr_art_catr|
usr_art_catr.input :article_category_id, :hidden
usr_art_catr.input :included
end
end
else
f.inputs "Admin Details" do
f.input :email
f.input :superuser, :label => "Super User Priveleges"
f.input :article_categories, :as => :check_boxes,
:collection => ArticleCategory.select("id, name")
end
end
f.buttons
end