0

私のアプリには、次の設定のuserphoto、およびstateモデルがあります。

には多くのユーザーがいます。

ユーザーは多くの写真を持っています。

写真ビューをホームページ (application.root) として設定しました。選択した状態で写真をフィルタリングするための選択タグを設定しようとしています。

ビューで:

<%= form_tag photos_path, :method => 'get' do%>
    <%= select("state", "name", State.all.collect(&:name)) %>
    <%= submit_tag "State" %>
<% end %>

コントローラーで:

if params[:state]
    statesmen = State.find_by_name(params[:state][:name]).users
    statesmen.each do |person|
        @photos = @photos <<  Photo.where(:user_id => person.id)
    end
end


質問:

  • 写真を集める良い方法はありますか?
  • 現在、写真テーブルにはuser_id列しかありません。state_id列も作成する必要がありますか?
  • 現在のアプローチの何が問題になっていますか?
4

1 に答える 1

0

したがって、関連付けは次のように設定されます。

状態.rb

has_many :users

user.rb

belongs_to :state
has_many :photos

写真.rb

belongs_to :user

state.rb に追加するだけ

has_many :photos, :through => :users

次に、次のことができます。

@photos = State.find_by_name(params[:state][:name]).photos
于 2012-07-29T07:43:13.263 に答える