Как сопоставить 2 столбца в одной собственности - PullRequest
0 голосов
/ 16 января 2010

С учетом миграции

class CreateTalks < ActiveRecord::Migration
  def self.up
    create_table :talks do |t|
      t.integer :duration_hours
      t.integer :duration_minutes
    end
  end

  def self.down
    drop_table :talks
  end
end

и модели

class Talk < ActiveRecord::Base
end

и объекта

class Duration
   attr_accessor :hours, :minutes
end

как сопоставить столбцы duration_hours и duration_minutes со свойством Durationв Talk, чтобы я мог сделать

d = Talk.first.duration
hours = d.hours
minutes = d.minutes

Я знаю, что в этом случае я мог бы перевести часы и минуты в секунды и сохранить их в одном столбце, но я пытаюсь понять, как я могдостичь этого типа сопоставления с ActiveRecord.

Ответы [ 3 ]

0 голосов
/ 16 января 2010

Я не уверен, что понимаю, чего вы пытаетесь достичь ... особенно с помощью хранения часов и минут в двух разных столбцах, а не хранения даты / времени и извлечения часов и минут .... buuuut .. мое понимание attr_accessor таково:

attr_accessor :duration_hours

невероятно равно:

def duration_hours
  @duration_hours
end

def duration_hours=(d)
  write_attribute(:duration_hours, d)
end

Так что Eimantas имеет в виду настройку вышеуказанных методов для хранения или отображения информации по своему усмотрению ... вы уже должны быть в состоянии сделать:

d = Talk.first
hours = d.duration_hours
minutes = d.duration_minutes

правый

EDIT:

Если вы пытаетесь составить список лекций или чего-то подобного и количество времени, которое каждый из них прошел с использованием ваших столбцов, я бы сделал это (только для отображения):

def duration
  @duration = self.duration_hours.to_s + ":" + self.duration_minutes.to_s
end

Тогда звоните, используя talk.duration. Небрежно, но работает.

0 голосов
/ 03 февраля 2011

Посмотрите на утилиту Comm_of в Rails; он позволяет вам отображать один или несколько столбцов базы данных в экземпляры классов Ruby.

Ссылки:

0 голосов
/ 16 января 2010

Запись пользовательских методов доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...