Чтобы проверить несколько каталогов, используйте этот код:
if [ -d "$DIRECTORY1" ] && [ -d "$DIRECTORY2" ] then
# Things to do
fi
По-моему, это похоже на отношения has_many - положите вместо этого в таблицу адресов Client_id.
Customer
has_many :addresses
Address
belongs_to :customer
Вы также можете указать иностранный ключ и класс в декларации assoc
Customer
has_one :address
has_one :other_address, foreign_key => "address_id_2", class_name => "Address"
В направляющих 5.1 или больше можно сделать это как это:
create_table(:customers) do |t|
t.references :address, foreign_key: true
t.references :address1, foreign_key: { to_table: 'addresses' }
end
Это создаст поля address_id
, и address1_id
и сделает ссылки уровня базы данных на addresses
Модели таблицы
class Customer < ActiveRecord::Base
belongs_to :address
belongs_to :address1, class_name: "Address"
end
class Address < ActiveRecord::Base
has_many :customers,
has_many :other_customers, class_name: "Customer", foreign_key: "address1_id"
end
при использовании FactoryBot тогда фабрика могла бы выглядеть примерно так:
FactoryBot.define do
factory :customer do
address
association :address1, factory: :address
end
end
Я понял, как это сделать благодаря Тоби:
class Address < ActiveRecord::Base
has_many :customers
end
class Customer < ActiveRecord::Base
belongs_to :billing_address, :class_name => 'Address', :foreign_key => 'billing_address_id'
belongs_to :shipping_address, :class_name => 'Address', :foreign_key => 'shipping_address_id'
end
Таблица клиентов включает столбцы shipping_address_id и billing_address_id.
Это, по сути, отношения has_two. Я нашел этот поток также полезным.