8

has_manyrspecテストを実行して、2つのモデルがとで相互に関連付けられていることを確認していbelongs_toます。これが私のテストです。

describe "testing for has many links" do
  before do
    @post = Post.new(day: "Day 1", content: "Test")
    @link = Link.new(post_id: @post.id, title: "google", url: "google.com")
  end

  it "in the post model" do
    @post.links.first.url.should == "google.com"
  end
end

テストでは、urlは未定義のメソッドであることがわかりました。私のテストの何が問題になっていますか?それとも、基本的なことを見逃しただけでしたか。

Postのモデルファイル

has_many :links

リンクのモデルファイル

belongs_to :post

その上、リンクモデルには属性がありますpost_id

4

2 に答える 2

18

この関係を検証するには、両方のモデルを保存する必要があります。また、gem を使用することもできます

コードは次のようになります。

describe Link do
  it { should belong_to(:post) }
end

describe Post do
  it { should have_many(:links) }
end
于 2012-11-15T01:51:06.417 に答える
2

そうしないと、空の配列 ([]) が返され、 が返さlinkれます。次に、試してから取得するURLは、の未定義のメソッドですpost@post.links[].firstnilnil.urlNilClass

@post = Post.new(day: "Day 1", content: "Test")
@link = Link.new(title: "google", url: "google.com")
@post.links << @link
于 2012-11-15T01:14:33.107 に答える