Ruby on rails 在保存到rails之前比较字符串
比较两个字符串表达式时Ruby on rails 在保存到rails之前比较字符串,ruby-on-rails,ruby,Ruby On Rails,Ruby,比较两个字符串表达式时“蝙蝠侠”!=“蝙蝠侠”无法创建对象, 但是当“蝙蝠侠”!=“robin”它成功创建了对象,发生了什么 class WebsiteLink < ActiveRecord::Base attr_accessible :external before_save :external? private def external? if "batman" != "batman" self.external = true el
“蝙蝠侠”!=“蝙蝠侠”
无法创建对象,
但是当“蝙蝠侠”!=“robin”它成功创建了对象,发生了什么
class WebsiteLink < ActiveRecord::Base
attr_accessible :external
before_save :external?
private
def external?
if "batman" != "batman"
self.external = true
else
self.external = false
end
end
end
classwebsitelink
如果过滤器之前的返回false
过滤器链停止。由于Ruby返回最后一个表达式的返回值(self.external=
,在您的示例中),如果将false
赋值给self.external
,则不会执行save
顺便说一句:self.external=“蝙蝠侠”!=“蝙蝠侠”
比以下内容短得多:
if "batman" != "batman"
self.external = true
else
self.external = false
end
因此,如果您希望示例在external
被指定为false的情况下仍然有效,则需要返回true
explicit:
class WebsiteLink < ActiveRecord::Base
attr_accessible :external
before_save :determine_external
private
def determine_external
self.external = "batman" != "batman"
true
end
end
classwebsitelink