我有一个类用户,我想在其中进行条件验证:
if $organization.first_name_last_name
validates :name_first, presence: true,
length: { maximum: 50 },
:if => :local_authentication?
validates :name_last, presence: true,
length: { maximum: 50 },
:if => :local_authentication?
但是,此全局组织变量是包含子域的特定设置的对象,并在应用程序控制器的before_filter中初始化。
class ApplicationController < ActionController::Base
before_filter :load_organization
...
def load_organization
$organization = Organization.find_by_subdomain(request.subdomain).settings
end
我的问题是如何在加载User类之前运行load_organization,以便正确设置组织变量。
答案 0 :(得分:1)
没有办法,这可行,因为User类不会在请求之间重新加载,至少不会在生产中重新加载。
您已使用:if
参数进行验证。您也可以将其用于设置:
validates :names_first, presence: true,
if: -> {
$organization.first_name_last_name &&
local_authentication?
}
BTW:使用全局变量通常是软件设计不良的标志。您尝试创建/更新它所属的组织的用户不是您可以通过关系getter访问设置吗?
P.S。:您也在混合哈希语法。您应该使用:foo => :bar
或foo: :bar
,但不能同时使用两者。实际上我很惊讶这个有用;)