1

私は、各行に複数の外部キーを含むテーブル(エンドウ豆)を持っていて、インデックスビューにそれらをリストしています。私は、同じ外来キーを含む他のテーブル(ニンジン)を持っています。異なるテーブルで同じ外部キー値を見つけるためのRubyの構文

最初のテーブル(エンドウ豆)から、同じ外来キー値を含む他のテーブル(ニンジン)の行を見つけて、条件文の中で使用する変数(@p)に入れます最初のテーブル(エンドウ豆)のインデックスビューに表示されます。これまでに作成したものはエラーを投げているわけではないので、診断するのは難しいです。

私はオペランドを変更しようとしましたが、成功しませんでした。

エンドウモデル(ないデータベースの変更がないため、モデルにメソッドを追加する)

def pea 
    @p = Carrot.find({ :fk_id => 'pea.fk_id', :fk2_id => 'pea.fk2_id' }) 
    end 

(各ループ内)ピーズインデックスビュー対応

<% if @p.present? %> 
<p>Say This</p> 
<% else %> 
<p>Say That</p> 
<% end %> 

私はある行を見つけたら2つの外部キーと一致します(fk_id & fk2_id)一致が一意であることがわかります。言い換えれば、ピーナッツの同じ2つの外部キー値を含むニンジンの行は1つだけになります。

私は本当に明白な何かが欠けているように感じます。私は同様の質問を検索しており、このシナリオとソリューションを一緒にハックするほど十分には一致しません。

Pea belongs_to :Carrot 
Carrot has_one :Pea 

正しい方向への助けに感謝します。

RoRの - レール4.2.5.2 /ルビー2.3.1p112(2016年4月26日改訂54768)[x86_64の-darwin14]、sqlite3の(DEV)、Postgresl(製品版)、マック

find
+0

なぜ複数の外部キーがあるのか​​分かりません。 'Carrot has_many:peas'をしてはいけませんか? –

+0

アプリの文脈で、いいえ、ニンジンは多くのエンドウ豆を持っていません。実際には、エンドウ豆とは完全に独立しています。外部キーは他の2つのテーブルからのものです。私はもっ​​とはっきりしていたはずだったが、質問を複雑にすることを望まなかった。 –

+0

私はあなたの構文に何の問題も見当たりませんし、あなたの問題は構文に関して何かを持っているとは思えませんが、それはあなたの件名に顕著に表示されています(すなわち質問の最も重要な部分、あなたの質問をクリックするかどうかの決定)。 Ruby構文の正確な問題は、あなたが持っていることを明確にすることはできますか? –

答えて

1

のみとしてPRIMARY_KEYを受け付け引数。他の属性の検索にはfind_byを使用してください。それが何を見つけていない場合

def pea 
    @p = Carrot.find_by(fk_id: 'pea.fk_id', fk2_id: 'pea.fk2_id') 
end 

はまたfindでエラーが発生しますので、あなたは何のエラーが表示されない場合チャンスはあなたがすべてのでメソッドpea呼び出されていないということです。

+0

これは解決策を提供しませんでしたが、問題を別の方法で見せなくてはなりませんでした。私はメソッドが呼び出されていないが、まだなぜわからないと確信しています。私のニンジンモデルは現実に似ていますが、私が達成しようとしているものを達成するためのより複雑な方法でした。キャロットデータを含む新しい列を既にPeaに関連付けられている表に作成し終えました。私はこれを行うことができ、まだアプリのコンテキスト内にとどまる。私は別の角度から解決策を見なければならなかったので、アップボーニング。 –

関連する問題