DataMapper Ассоциация «Многие ко многим» с использованием Sinatra - PullRequest
1 голос
/ 02 июля 2010

Я просто изучал Sinatra и DataMapper при создании простого блога.Кажется, у меня возникла проблема с работой моей ассоциации «многие ко многим».Я пытаюсь связать категории с постами.При создании сообщения ассоциация категорий не создается.

Вот мои модели:

class Post

  include DataMapper::Resource

  has n, :categories, :through => Resource

  property :id,             Serial
  property :title,          String
  property :slug,           String
  property :body,           Text
  property :description,    Text
  property :created_at,     DateTime
  property :updated_at,     DateTime
  property :posted_at,      DateTime

end

class Category

  include DataMapper::Resource

  has n, :posts, :through => Resource

  property :id,             Serial
  property :title,          String

end

DataMapper успешно создает таблицу category_posts.Я не думаю, что код является правильным в моей форме создания.

 <form action="/post/create/" method="post">
        <% @category = Category.all %> 
        <% @category.each_with_index do |cat,i| %>
            <input id="category<%=i%>" type="checkbox" value="<%= cat.title %>" name="post.category.<%=cat.id%>" />
            <label for="category<%=i%>"><%= cat.title%></label>
        <% end %>
    <p>
            <input type="submit">
        </p>
    </form>

Я попытался вручную создать записи в таблице category_posts, и никакие записи не отображаются.Вот часть моего взгляда, связанная с категориями.Счет для отладки, он всегда показывает 0.

<%= @post.categories.count %>
    <% @post.categories.each do |category| %>
        <p>Test: <%= category.title %></p>
    <% end %>

Есть идеи, что я делаю не так?

Спасибо

Ответы [ 2 ]

1 голос
/ 12 декабря 2013

Документация для Datamapper (раздел «Имеет и принадлежит многим (или многим-многим)») имеет некоторые советы, как указывает @Mika Tuupola, похоже, что вы Если ваши модели настроены правильно, проблема может заключаться в использовании ваших моделей:

post  = Post.create
category = Category.create

# link them by adding to the relationship
post.categories << category
post.save

p post.categories # => [#<Category @id=1>]
0 голосов
/ 10 июля 2010

У меня ограниченный опыт работы с datamapper, но нужно ли вам определять :key => true для обоих идентификаторов?

...