我有以下两种型号:
class TopicContent < ActiveRecord::Base
unloadable
belongs_to :topic
end
和
class Topic < ActiveRecord::Base
unloadable
has_one :topic_content
accepts_nested_attributes_for :topic_content
end
以下show动作,从所选主题中获取:id:
def show
@text = TopicContent.find(params[:id])
end
问题是,查找方法始终采用主键(id)而不是外键(topic_id) TopicContent表。
我定义的关联有问题吗?
答案 0 :(得分:2)
.find(primary_key)
始终根据primary key
从数据库中检索记录。
使用.find_by(conditions)
代替,因为它找到传递给它的第一个记录匹配条件。
例如:
@text = TopicContent.find_by(topic_id: params[:id])
答案 1 :(得分:0)
您需要通过主题找到TopicContent。
def show
@topic = Topic.find(:topic_id)
@text = @topic.topic_content
end
这假设您也设置了路线。