Rails find方法没有使用我的外键

时间:2014-03-12 22:55:17

标签: mysql ruby-on-rails model-associations

我有以下两种型号:

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表。

我定义的关联有问题吗?

2 个答案:

答案 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

这假设您也设置了路线。