Object.update_attribute(:only_one_field, "Some Value")
Object.update_attributes(:field1 => "value", :field2 => "value2", :field3 => "value3")
Run Code Online (Sandbox Code Playgroud)
这两个都将更新对象,而不必明确告知AR更新.
Rails API说:
for update_attribute
更新单个属性并保存记录,而无需通过正常的验证过程.这对现有记录上的布尔标志特别有用.混合验证模块时,Base中的常规update_attribute方法将替换为此默认值.
for update_attributes
更新传入的Hash中的所有属性并保存记录.如果对象无效,则保存将失败并返回false.
因此,如果我不想验证对象,我应该使用update_attribute.如果我在before_save上有这个更新怎么办,它会堆栈溢出吗?
我的问题是update_attribute是否也绕过了之前的保存或只是验证.
另外,将散列传递给update_attributes的正确语法是什么...查看我顶部的示例.
我有一个rake任务,除非存在一个表,否则它将无效.我正在一个网站上与20多名工程师一起工作,所以我想确保他们已经迁移了表,然后才能执行一个rake任务,该任务将填充相应的表.
AR有这样的方法Table.exists吗?如何确保他们已成功迁移表?
ENV["BUNDLE_GEMFILE"] = File.expand_path("../../Gemfile", __FILE__)
我只是想从某个目录访问一个.rb文件,一个教程告诉我使用这个代码,但我不知道它是如何找到gem文件的.
return和变换之间有什么区别,如下所示:
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = "No Problem"
end
mood
end
Run Code Online (Sandbox Code Playgroud)
def write_code(number_of_errors)
if number_of_errors > 1
mood = "Ask me later"
else
mood = puts "No Problem"
end
return mood
end
Run Code Online (Sandbox Code Playgroud) $('.transparent').removeClass('transparent').delay(2000).addClass('not_transparent').delay(4000)
Run Code Online (Sandbox Code Playgroud)
我有一个半透明的div,然后想把它切换到不透明.但是jQuery .delay(); 方法在这里似乎不起作用.我试过.fadeIn(); 相反,这有效延迟但它不适用于改变类.
我想不可能设置像CSS这样的笔触属性很容易.使用CSS时,我们在绘制线条/笔划时使用虚线,点线,实体但在画布上这似乎不是一种选择.你是如何实现的?
我已经看过一些例子,但他们真的很渴望这么愚蠢的功能.
例如:
我想做什么:
我有一个博客,想在主帖后面显示相关帖子.
class Post < ActiveRecord::Base
has_many :related_posts
has_many :posts, :through => :related_posts
end
Run Code Online (Sandbox Code Playgroud)
然后在连接模型/表中
class RelatedPost < ActiveRecord::Base
belongs_to :post
end
Run Code Online (Sandbox Code Playgroud)
当然还有一个叫related_posts两post_id列的表.
显然这有几个缺点,我只是不确定如何在Rails中使这个关联工作.
例如,我有4800,我想看到这个数字的所有因素.
# num = the number you want factors of
def factors_of(num)
(1..num).collect { |n| [n, num/n] if ((num/n) * n) == num}.compact
end
Run Code Online (Sandbox Code Playgroud)
divisors_of(4800)=> [[1,4800],[2,2,400],[3,1600],[4,1200],[5,960],[6,800],[8,600],[ 10,480],[12,400],[15,320],[16,300],[20,240],[24,200],[25,192],[30,160],[32, 150],[40,120],[48,100],[50,96],[60,80],[64,75],[75,64],[80,60],[96,50] ,[100,48],[120,40],[150,32],[160,30],[192,25],[200,24],[240,20],[300,16],[ 320,15],[400,12],[480,10],[600,8],[800,6],[960,5],[1200,4],[1600,3],[2400, 2],[4800,1]]
你会用红宝石或任何语言做到这一点?