小编gsm*_*oza的帖子

Rails中首选的夹具更换插件?

有十几个Rails插件,其目标是在测试中替换灯具.以下是我能想到的一些内容:

  • 夹具更换
  • 工厂女工
  • 工厂和工人
  • 铁轨情景
  • 灯具情节
  • 对象爸爸

可能还有其他人.您更喜欢哪些插件?为什么?

ruby plugins ruby-on-rails fixtures

15
推荐指数
1
解决办法
4160
查看次数

如何保护Rails模型属性?

我的发票模型有一个address_id属性,我不希望这个address_id更改为FOREVER.所以我不希望这发生在课外:

invoice.address_id = 1
invoice.address = some_address
Run Code Online (Sandbox Code Playgroud)

Rails会自动将此address_id属性从发票表添加到模型中,那么如何将此属性声明为private/protected?调用

attr_protected :address_id
Run Code Online (Sandbox Code Playgroud)

很可能不是解决方案,因为根据文档它只能防止大规模分配.

谢谢!

ruby model ruby-on-rails

12
推荐指数
2
解决办法
4676
查看次数

acts_as_tree不会破坏模型的子项

我有这个任务模型:

class Task < ActiveRecord::Base
  acts_as_tree :order => 'sort_order'
end
Run Code Online (Sandbox Code Playgroud)

我有这个测试

class TaskTest < Test::Unit::TestCase
  def setup
    @root = create_root
  end

  def test_destroying_a_task_should_destroy_all_of_its_descendants
    d1 = create_task(:parent_id => @root.id, :sort_order => 2)
    d2 = create_task(:parent_id => d1.id, :sort_order => 3)
    d3 = create_task(:parent_id => d2.id, :sort_order => 4)
    d4 = create_task(:parent_id => d1.id, :sort_order => 5)
    assert_equal 5, Task.count

    d1.destroy

    assert_equal @root, Task.find(:first)
    assert_equal 1, Task.count
  end
end
Run Code Online (Sandbox Code Playgroud)

测试成功:当我销毁d1时,它会破坏d1的所有后代.因此,在破坏之后只剩下根.

但是,在我向Task添加了before_save回调之后,此测试现在失败了.这是我添加到Task的代码:

before_save :update_descendants_if_necessary

def update_descendants_if_necessary
  handle_parent_id_change if self.parent_id_changed?
  return true
end

def …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails acts-as-tree

5
推荐指数
1
解决办法
990
查看次数

Rails中的日期/时间比较

我希望能够在Rails中比较Dates和Times,而无需始终调用to_time或to_date方法.所以我写了下面的代码:

class Date
  def ==(other)
    if other.kind_of?(Time)
      self.to_time == other
    else
      super(other)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

我知道有一种简单的方法可以写这个,这样我就可以为>,<,> =,<=和<=>做这个工作.但我忘记了:P有什么想法吗?

ruby ruby-on-rails

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

ruby ×4

ruby-on-rails ×4

acts-as-tree ×1

fixtures ×1

model ×1

plugins ×1