ruby on rails db setup format / active record retrieval

时间:2012-07-29 07:36:27

标签: ruby-on-rails database activerecord many-to-many

我的应用包含用户照片模型,具有以下设置:

  

有很多用户。

     

用户有很多照片。

我将照片视图设置为主页(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列?
  • 目前的方法有什么问题?

1 个答案:

答案 0 :(得分:0)

所以您的关联设置如下:

state.rb

has_many :users

user.rb

belongs_to :state
has_many :photos

photo.rb

belongs_to :user

只需添加到state.rb

即可
has_many :photos, :through => :users

然后你可以做到:

@photos = State.find_by_name(params[:state][:name]).photos