开发者

How to do this sql statement using Rails

开发者 https://www.devze.com 2023-04-01 17:52 出处:网络
I have two models as follows: icon.rb belongs_to :category attr_accessible :name, :url, :category_id, :icon_for

I have two models as follows:

 icon.rb

  belongs_to :category

  attr_accessible :name, :url, :category_id, :icon_for

# == Schema Information
#
# Table name: icons
#  id          :integer         not null, primary key
#  name        :string(255)
#  开发者_如何学Pythonurl         :string(255)
#  category_id :integer
#  icon_for    :string(255)

category.rb

  has_many :icons

  attr_accessible :name, :adult
end

# == Schema Information
#
# Table name: categories
#
#  id         :integer         not null, primary key
#  name       :string(255)

In the Icons controller

def index

@icons = Icon.where(:icon_for => params[:icon_for])
@category_names_for_icons = ???????

end

I want to get all the category names for the categories the selected icons are for.

category_names = Category.where(:id => @icons.category_id) how to make this a range? 

Am I on the right track?


You want to extract the category_id from each of your @icons into an array:

category_names = Category.where(:id => @icons.map(&:category_id))

The Ruby map function iterates over an array, and returns an array. You can think of the &:category_id bit as calling the category_id function on each item in the array.

0

精彩评论

暂无评论...
验证码 换一张
取 消