【发布时间】:2014-01-08 17:55:54
【问题描述】:
两个表通过多态关联与另一个表»反馈«具有 has_one 关系。
# Class Request
class Request < ActiveRecord::Base
belongs_to :user, inverse_of: :requests
has_one :feedback, as: :feedbackable
end
# Class Acceptance
class Acceptance < ActiveRecord::Base
belongs_to :user, inverse_of: :acceptances
has_one :feedback, as: :feedbackable
end
# Class Feedback
class Feedback < ActiveRecord::Base
belongs_to :feedbackable, polymorphic: true
belongs_to :user, inverse_of: :feedbacks
end
但是,当尝试创建与请求或接受相关的反馈时,控制台会向我抛出错误。以下是我尝试创建反馈的方式:
# First way
feedback = request.create_feedback(user_id: 2, message: "Hey, good driver!")
# Second way
feedback = Feedback.create(user_id: 1, message: "Hey, good driver!")
#user_id describes the user the feedback addresses
request = Request.create(user_id: 2)
#user_id describes the user the request comes from
request.feedback = feedback
这是抛出的错误:
ActiveRecord::InverseOfAssociationNotFoundError: 找不到 反馈的反向关联(:反馈中的请求)
提前谢谢,我一直在到处搜索,没有发现类似的问题:S
您可能想知道我的数据库是什么样的:
class CreateAcceptances < ActiveRecord::Migration
def change
create_table :acceptances do |t|
t.references :user, index: true
t.timestamps
end
end
end
class CreateRequests < ActiveRecord::Migration
def change
create_table :requests do |t|
t.references :user, index: true
t.timestamps
end
end
end
class CreateFeedbacks < ActiveRecord::Migration
def change
create_table :feedbacks do |t|
t.references :feedbackable, polymorphic: true
t.references :user, index: true
t.string :message
t.timestamps
end
end
end
【问题讨论】:
标签: database activerecord ruby-on-rails-4