举个简单的例子,假设我有:
class Garage
has_many :things
accepts_nested_attributes_for :things
end
class Thing
# has a name attribute
belongs_to :garage
belongs_to :user
end
class User
...
end
我有一个GaragesController,它接受一个新车库和里面所有东西的POST。
def create
@garage = Garage.create(safe_garage_params)
end
def safe_garage_params
params.require(:garage).permit(...)
end
我必须为每个/所有创建的东西设置用户。显然,我可以抓取safe_garage_params散列,并为things_attributes数组中的每个Thing散列设置user。但这看起来很笨拙。有没有更好/更干净的方法?
当然,在我的实际程序中,子数组可以深入几层--这使得爬行更难看。
2条答案
按热度按时间mpbci0fu1#
在Rails 6中,这是可行的。但这太暴力了,我想要一些不那么激烈的东西。
与
在rails 7中,它需要一些更新,因为DefaultScope和all_queries变成了一个东西。
jexiocij2#
也许像这样:
CurrentAttributes
:https://api.rubyonrails.org/classes/ActiveSupport/CurrentAttributes.html