2012-07-29 38 views
0

我的应用程序有用户照片状态型号如下设置:Ruby on Rails的DB设置格式/主动记录检索

一个状态拥有众多用户。

A 用户有很多照片。

我想看的照片设置为主页(application.root)。我试图设置一个选择标记来过滤照片w.r.t选定的状态。

在View:

<%= 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列吗?
  • 目前的方法有什么问题?
+0

检查的编辑。下次请考虑制作描述性句子,格式化代码并避免使用HTML标签(尤其是单行换行)。请记住,质量*会提高获得及时关注的机会。欢迎来到*堆栈* **溢出**! – 2012-07-29 11:54:13

回答

0

所以,你的关联被设置如下:

state.rb

has_many :users 

user.rb

belongs_to :state 
has_many :photos 

photo.rb

belongs_to :user 

刚广告d到state.rb

has_many :photos, :through => :users 

然后,你可以这样做:

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