Я есть эти два класса,DataMapper имеет п через ресурс DELETE (Удалить из ассоциации) не работает
class User
include DataMapper::Resource
property :id, Serial
property :name, String
has n :posts, :through => Resource
end
class Post
include DataMapper::Resource
property :id, Serial
property :title, String
property :body, Text
has n :users, :through => Resource
end
так, как только у меня есть новый пост как:
Post.new(:title => "Hello World", :body = "Hi there").save
Я имеющие серьезные проблемы с добавлением и удалением из ассоциации, например:
User.first.posts << Post.first #why do I have to save this as oppose from AR?
(User.first.posts << Post.first).save #this just works if saving the insertion later
И как мне удалить сообщение из этой ассоциации? Я использую следующие, но, безусловно, ее не работает:
User.first.posts.delete(Post.first) #returns the Post.first, but nothing happens
User.first.posts.delete(Post.first).save #returns true, but nothing happens
User.first.posts.delete(Post.first).destroy #destroy the Post.first, not the association
Так что я действительно не знаю, как это удалить из массива BoltUser.
Спасибо за объяснение Дэн, этот метод, о котором вы говорили, работал так же хорошо! Cheers – zanona
Не создается() устарело? Но я понимаю, что new() теперь работает одинаково для коллекции, так что User.first.posts.new() создаст и сохранит запись? – arbales
Нет, create() не устарел. new() просто инициализирует ресурс в памяти. Однако он связывает его с родительским объектом, поэтому сохранение родителя приведет к тому, что ребенок будет сохранен. – dkubb