我有两个数组:
@all_genres = [#<Genre id: 1, name: "Action", created_at: "2013-03-01 07:44:51", updated_at: "2013-03-01 07:44:51">,
#<Genre id: 2, name: "Adventure", created_at: "2013-03-01 07:44:51", updated_at: "2013-03-01 07:44:51">,
#<Genre id: 3, name: "Animation", created_at: "2013-03-01 07:44:51", updated_at: "2013-03-01 07:44:51">]
@genres = ["Action", "Animation"]
我试图找到Genre.id
与@genres
表格相比较的@all_genres
。例如,我的结果应该是:
@genre_ids = [1, 3]
我试过这个:
@all_genres.each do |g|
if g.name.include?((@genres.each {|g| g}).to_s)
@genre_ids << g.id
end
end
我在我的控制台中尝试了这个并且它似乎有效,但当我把它放入我的应用程序时它会返回:
@genre_ids = []
答案 0 :(得分:6)
更多铁路版本:
@genre_ids = Genre.where(name: @genres).pluck(:id)
答案 1 :(得分:2)
我假设您通过拨打@genres
来填充Genre.all
数组。
你可以简单地做这样的事情:
Genre.where("name IN (?)", %w[name action]).collect { |x| x.id }
如果您想为这些名称检索类型的ids
。
答案 2 :(得分:2)
或者你可以试试这个单行:
@genre_ids = @all_genres.select{|g| @genres.include? g.name }.map(&:id)