こんにちは私はRailsにまったく慣れていないので、これがばかげている場合は申し訳ありません。私は何時間も探してきました。何を聞いたらいいのかわからない。助けてくれてありがとう。
コードと説明を含むテーブルを作成しようとしています。次に、コードが含まれる別のメインテーブル。これらの2つのテーブルを結合して、コードで並べ替えて説明を取得できるようにします。説明を引き出すためのコードがわからないようです。
これはコードと説明の移行です
create_table :sniffs do |t|
t.string "sniff_desc", :limit => 5
t.timestamps
end
これはメインテーブルの移行です
create_table :lenders do |t|
t.integer "sniff_id"
t.timestamps
end
add_index("lenders", "sniff_id")
これらはモデルです
class Lender < ActiveRecord::Base
belongs_to :sniffs
scope :ranked, order("lenders.sniff_id ASC")
end
class Sniff < ActiveRecord::Base
has_many :lenders
end
スニフテーブルは
id sniff_desc
1 Great
2 OK
3 Bad
貸し手テーブルは
id sniff_id
1 2
2 2
3 3
これは私が理解できないことですか?特定の貸し手インスタンスに対して、sniff_descを取得するにはどうすればよいですか。たとえば、私はlender.id(2)を使用していて、sniff_desc"OK"を取得したいと考えています。
だから私がレールコンソールなら
lender = Lender.find(2)
lender.sniffs
私は得る
=> nil
私はスニフで2番目のレコードを取得すると思いました。これを入力すると
Sniff.find(lender.sniff_id).sniff_desc
正解です
=> "OK"
しかし、そのコードは、1対多の関係を行うという目的全体を無効にしているようです。
私は1対多の正しいことを理解していませんか?または、これを修正するにはどうすればよいですか?
助けてくれてありがとう。この質問は単純すぎるので、他に質問する人は見つかりませんでしたか?!