sequel关联对象的更新问题

数据库中的对象 vs 内存中的对象(正确性 vs 效率)

# in controller
@basic_content.update(name: params[:name])
@copyright.to_topic_hash

# in model Copyright
class Copyright
  many_to_one :basic_content

  def after_save
    bc1 = BasicContent.with_pk!(self.basic_content_id) # 数据库中的对象
    bc2 = self.basic_content # 内存中的对象
    # bc1和bc2并不完全相同
  end
end

sequel uses raw sql

insert example:

# generate sql
sql = "insert into tb_test (#{table.columns.join(',')}) values "
sql += records.map{|r| "(" + %Q[value1, null, "string-value", now(), "#{Time.now.strftime("%F %T")}"] + ")"}.join(",")
DB[sql].insert

sequel virtual row

官网上有详细解释。 主要是在需要操作符和函数的时候会用到(当你不想拼sql的时候)。

dataset.where{a > b(c)}
ds.where{function(1) > 1}
dataset.where{text_mainbody_id !~ nil}

还有一点就是如果在sql中拼null的时候,应该是column is null而不是column = null