0

Ruby on Rails は初めてです。次の SQL クエリの適切な Ruby クエリを特定しようとしています。次のクエリは機能しますが、これを行うための最も Railsy な方法は何だろうと思っています。

@user_urls = Url.find_by_sql(["
select urls.* 
from urls 
join connections on connections.id = urls.connection_id 
join users on users.id = connections.user_id 
where urls.marked_for_sending = true and users.id = ?", @user.id])

ここに私のモデルの関連付けに関するいくつかの詳細があります -

User has many Connections
Connection has many URLs
Connection belongs to User
URL belongs to Connection

アイデアをください。

4

3 に答える 3

0

User モデルに関連付けを追加できます。

#user.rb
has_many :urls, :through => :connections

@user_urls = @user.urls.where(marked_for_sending: true)

その他のオプション:

@user_urls = Url.joins(:connection).where(connections: {user: @user}).where(marked_for_sending: true)
于 2013-11-01T07:53:22.833 に答える
0

joinsおよびwhereレールで使用できます

@user_urls = Url.joins("LEFT JOIN connections ON connections.id = urls.connection_id").joins(" LEFT JOIN users ON users.id = connections.user_id").where("urls.marked_for_sending =? AND users.id = ?", true, @user.id)
于 2013-11-01T07:48:57.503 に答える