我有性别,并且基于性别名称创建类别和子类别。
m = Gender.create(:gender => 'masculine')
c = Category.find_by_name("T-shirt", gender: m )
c.subcategories.create(:name => "Necklace" )
等等。
答案 0 :(得分:2)
虽然Amit Sharma的答案有效,但我建议对其进行一些改进。
使用新的哈希语法:
var myVal = document.getElementsByName("pf1")[0].value;
childWindow.document.getElementsByName("cf1")[0].value = myVal;
使用find_by而不是where / first
gender = Gender.create!(gender: 'masculine')
不检查返回值时使用bang变体
category = Category.find_by(gender: gender, name: 'T-Shirt')
使用if / present?而不是除非/空白?
category.subcategories.create!(name: 'Necklace')
(这只是一个品味问题。但是我的大脑似乎在解析除非表达式之前有麻烦: - )
使用find_or_initialize_by / find_or_create_by!
如果你想找到类别或创建它,如果它不存在,使用find_or_initialize / find_or_create_by!(),这样你可以避免零检查:
if category.present?
category.subcategories.create!(name: 'Necklace')
end
所以我总是这样写:
category = Category.find_or_create_by!(gender: gender, name: 'T-Shirt')
答案 1 :(得分:1)
你可以试试这个。
m = Gender.create(:gender => 'masculine')
c = Category.where(name: "T-shirt", gender: m.gender ).first
c.subcategories.create(name: "Necklace" )
请注意,如果在给定条件下未找到任何类别,则上述代码将引发异常,以避免您可以使用以下内容。
m = Gender.create(:gender => 'masculine')
c = Category.where(name: "T-shirt", gender: m.gender).try(:first)
unless c.blank?
c.subcategories.create(name: "Necklace" )
end