gpt4 book ai didi

ruby-on-rails - 你可以将自己传递给 rails 中的 lambda 吗?

转载 作者:数据小太阳 更新时间:2023-10-29 08:14:20 25 4
gpt4 key购买 nike

我想定义一个可以访问局部变量的类方法。所以这对于类的每个实例都是不同的。我知道您可以使用 lambda 使类方法动态化,就像您将它与 named_scope 一起使用一样。但是,对于特定于实例的值可以做到这一点吗?

详细来说就是rails中paperclip插件的has_attached_file方法。我想为样式散列传递一个 lambda,以便图像样式可以基于存储在数据库中的对象的属性。这可能吗?

最佳答案

免责声明:首先,问题(你能将 self 传递给 lambda 吗?)和你试图解决的问题(使用回形针的动态样式)不完全匹配。我不会回答原来的问题,因为它与你的问题并不完全相关,而且 rampion 对此进行了勇敢的尝试。

我会回答你的回形针问题。

In detail it is the has_attached_file method for the paperclip plugin in rails. I want to pass a lambda for the styles hash so that the image styles can be based off of attributes of the object stored in the DB. Is this possible?

是的,这是可能的。在回形针中,:styles 选项可以接受一个 Proc。初始化附件时,如果使用了 Proc,附件本身将传递给 Proc。附件具有对关联的 ActiveRecord 对象的引用,因此您可以使用它来确定您的动态样式。

例如,您的 has_attached_file 声明可能如下所示(假设用户和头像场景,用户可以自定义其头像的大小):

class User < ActiveRecord::Base
has_attached_file :avatar, :styles => lambda { |attachment|
user = attachment.instance
dimensions = "#{user.avatar_width}x#{user.avatar_height}#"
{ :custom => dimensions }
}
end

关于ruby-on-rails - 你可以将自己传递给 rails 中的 lambda 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109496/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com