кто-нибудь получил act_as_list для работы на рельсах 3? - PullRequest
5 голосов
/ 22 декабря 2010

Я установил, поместив следующую строку в Gemfile и 'bundle install':

gem 'acts_as_list', '>= 0.1.0'  

Однако, когда я пытаюсь использовать его, результаты не соответствуют ожидаемым:

technician.move_to_top #works => position = 1  
technician.move_to_bottom #does not work properly; also makes position = 1  
technician.move_higher #does not work; returns nil  
technician.move_lower #does not work; also returns nil  

Этот плагин просто не работает с рельсами 3 или я пропускаю шаг?

вот код, который я использую:

class WorkQueue < ActiveRecord::Base  
  has_many :technicians, :order => "position"  
end  

class Technician < ActiveRecord::Base  
  belongs_to :work_queue  
  acts_as_list :scope => "work_queue_id" #I also tried using work_queue  
end  

это консоль:

wq = WorkQueue.new  
technician = Technician.last
wq.technicians << technician  

Ответы [ 3 ]

9 голосов
/ 20 мая 2011

Не используйте самоцвет "действует как список", потому что этот самоцвет не обновляется долгое время.

Попробуйте это:

rails plugin install git://github.com/swanandp/acts_as_list.git
3 голосов
/ 21 апреля 2013

acts_as_list 0.2.0 работает для меня в Rails 3.2.11 на Ruby 1.9.3. Однако синтаксис << для добавления задач вызывает проблемы. Вместо этого я использовал list.tasks.create (). </p>

Вот пример теста:

test "acts_as_list methods" do
  list = ToDoList.create(description: 'To Do List 1')

  task1 = list.tasks.create(description: 'Task 1')
  task2 = list.tasks.create(description: 'Task 2')
  task3 = list.tasks.create(description: 'Task 3')

  assert_equal 3, list.tasks.count
  assert_equal task1.id, list.tasks.order(:position).first.id
  assert_equal task3.id, list.tasks.order(:position).last.id

  # Move the 1st item to the bottom. The 2nd item should move into 1st
  list.tasks.first.move_to_bottom

  assert_equal 3, list.tasks.count
  assert_equal task2.id, list.tasks.order(:position).first.id
  assert_equal task1.id, list.tasks.order(:position).last.id
end

При создании новой задачи, не связанной с списком to_do_list, acts_as_list назначит позицию, ограниченную to_do_list_id == nil. Позже добавление существующей задачи в список to_do_list с помощью << не обновляет позицию задачи, так что acts_as_list запутывается в позициях. </p>

Проверьте свой файл test.log, чтобы увидеть операторы SQL, сгенерированные Act_as_list, чтобы получить четкое представление о том, что происходит в вашем конкретном приложении.

Поскольку кажется, что ваши специалисты назначены после создания задач work_queue, вам может потребоваться вручную установить или пересчитать позиции после вызова «<<». Возможно, вы также рассмотрите возможность перемещения act_as_list в свою модель TechnicianWorkQueue, поэтому act_as_list вызывается только при создании отношений между Technician и WorkQueue. </p>

0 голосов
/ 22 декабря 2010

Похоже, это должно работать: http://www.railsplugins.org/plugins/317-acts-as-list?version_id=418

...