[英]Rails - relation between activeadmin model and custom model
首先,我想知道是否有可能將我的模型之一與ActiveAdmin::Comment
和AdminUser
模型相關聯
這是我的model
class AdminAction < ActiveRecord::Base
has_one :comment, :class_name => "ActiveAdmin::Comment", :foreign_key => "admin_action_id"
belongs_to :admin_user
end
這些關聯不會引發任何錯誤,只是返回`nil'
我在那兩個模型中添加了一個字段:
add_column :admin_users, :admin_action_id, :integer
add_column :active_admin_comments, :admin_action_id, :integer
這里的目標是獲取與我的新模型AdminAction
相關的AdminUser
和Comment
,當我這樣做時
a = AdminAction
a.admin_user
# and
a.comment
有用
有任何想法嗎 ?
你需要有一個admin_user_id
在admin_actions
表,使這個belongs_to
協會工作。
class AdminAction < ActiveRecord::Base
belongs_to :admin_user
end
此外, foreign_key
參數是不必要的,因為它會從被推斷AdminAction
類名。
class AdminAction < ActiveRecord::Base
has_one :comment, :class_name => "ActiveAdmin::Comment", :foreign_key => "admin_action_id"
end
除此之外,您所擁有的應該能按預期工作。 如果不是,請提供更多有關您所看到或未看到的內容的詳細信息。
我正在使用User
模型而不是AdminUser
進行此工作。 這是我的代碼:
遷移
class CreateAdminAction < ActiveRecord::Migration
def change
create_table :admin_actions do |t|
t.references :user, index: true
t.timestamps
end
end
end
class AddFieldsForAdminAction < ActiveRecord::Migration
def change
add_column :active_admin_comments, :admin_action_id, :integer
end
end
AdminAction
類
class AdminAction < ActiveRecord::Base
has_one :comment, class_name: 'ActiveAdmin::Comment'
belongs_to :user
end
另一個想法:如果您希望獲取單個AdminUser
的ActiveAdmin::Comment
記錄,我認為您可以像這樣直接獲取它們:
admin_comments = ActiveAdmin::Comment.find_for_resource_in_namespace(AdminUser.find(some_id), :admin)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.