0

我的应用具有userphotostate模型,设置如下:

一个有很多用户。

一个用户有很多照片。

我将照片视图设置为主页(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

用户.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 回答