0

我有一个定义为运动员的方法,它是用户模型中的创始人,还有一个布尔列定义为运动员,默认值为 false。

提供者是 twitter 或 facebook,如果提供者不是其中的任何一个并且为空白,那么我希望它在下面的方法中将运动员列切换为 true。

 def athlete?
    provider.blank?
  end

我尝试了多种方法,但没有运气,比如下面的切换方法没有运气。

 def athlete?
    provider.blank?
    user.toggle!(:athlete)
  end
4

1 回答 1

1

由于我不知道 Provider 的列类型,我假设它是一个字符串,可能值为“facebook”、“twitter”和“”。尝试这样的事情,让我知道你得到了什么

def athlete?
  !provider.any? { |p| %w(facebook twitter).include?(p) }
end

所有这一切都是检查提供者是否包含“twitter”或“facebook”,如果没有,则返回 true。

如果您想更新属性,请执行以下操作:

def athlete=(athlete)
  self[:athlete] = !provider.nil? && !provider.any? { |p| %w(facebook twitter).include?(p) } rescue true
end
于 2012-08-04T22:30:32.277 回答